﻿/**********************************************************************
 * @file   SEAAreaJunctionDialog.h
 * @brief  面连接对话框
 * @author BaGuijun (baguijun@163.com)
 * @date   2024-11-12
 *********************************************************************/
#ifndef _SEAAreaJunctionDialog_H
#define _SEAAreaJunctionDialog_H

#include "GUIJunctionDialogAPI.h"
#include "GUIJunctionDialogBase.h"
#include "FITK_Component/FITKAcousticsModel/FITKSEAJunctionArea.h"

namespace Ui {
    class SEAAreaJunctionDialog;
}

namespace Acoustics {
    class FITKSEAJunctionArea;
}

namespace EventOper {
    class ParaWidgetInterfaceOperator;
}

namespace GUI
{
    class SEAJunctionUserDefWidget;
    /**
     * @brief  面连接对话框
     * @author BaGuijun (baguijun@163.com)
     * @date   2024-11-12
     */
    class GUIJunctionDialogAPI SEAAreaJunctionDialog :public GUIJunctionDialogBase
    {
        Q_OBJECT;
    public:
        /**
         * @brief    构造函数
         * @param[i] dataID        数据id
         * @param[i] oper          操作器
         * @param[i] isCreate      是否创建
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        SEAAreaJunctionDialog(int dataID, EventOper::ParaWidgetInterfaceOperator* oper, bool isCreate);
        /**
         * @brief    析构函数
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        ~SEAAreaJunctionDialog();
        /**
         * @brief    初始化
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        void init();
        /**
         * @brief    设置子系统id列表
         * @param[i] subSysIDs 
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-15
         */
        void setSubSysIDs(QList<int>& subSysIDs);
    private slots:
        ;
        /**
         * @brief    OK按钮点击事件
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-13
         */
        void on_pushButton_Ok_clicked();
        /**
         * @brief    取消按钮点击事件
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-13
         */
        void on_pushButton_Cancel_clicked();
        /**
         * @brief    渗漏添加事件
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-15
         */
        void on_pushButton_Add_clicked();
        /**
         * @brief    渗漏拷贝事件
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-15
         */
        void on_pushButton_Duplicate_clicked();
        /**
         * @brief    渗漏编辑事件
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-15
         */
        void on_pushButton_Edit_clicked();
        /**
         * @brief    渗漏删除事件
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-15
         */
        void on_pushButton_Delete_clicked();
        void on_checkBox_TransmissionLoss_clicked();
    private:
        /**
         * @brief    创建初始化
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        void InitCreate();
        /**
         * @brief    编辑初始化
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        void InitEdit();
        /**
         * @brief    创建确定
         * @return   bool         是否成功
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        bool OKCreate();
        /**
         * @brief    编辑确定
         * @return   bool         是否成功
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        bool OKEdit();
        /**
         * @brief    将界面数据填充至数据对象中
         * @param[i] data     数据对象
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        void getDataFromWidget(Acoustics::FITKSEAJunctionArea* data);
        /**
         * @brief    将数据对象中的数据填充至界面
         * @param[i] data     数据对象
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        void setDataToWidget(Acoustics::FITKSEAJunctionArea* data);
    private:
        /**
         * @brief    更新方向选项
         * @param[i] subSysList     子系统列表
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-22
         */
        void initDirectionComboBoxItem(const QList<int>& subSysList);
        /**
         * @brief    初始化连接General图片
         * @param[i] subSysList     子系统列表 
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-22
         */
        void initGeneralImage(const QList<int>& subSysList);
        /**
         * @brief    初始化几何属性
         * @param[i] shellID       板id
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-25
         */
        void initGeoPro(int shellID);
        /**
         * @brief    更新连接表格
         * @param[i] junction          连接列表
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-12
         */
        void updateConnectTable(QList<Acoustics::FITKSEAJunAreaConStr>& junction);
        /**
         * @brief    更新渗漏表格
         * @param[i] leaks             渗漏列表          
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-15
         */
        void updateLeaksTable(QList<Acoustics::FITKSEAJunAreaLeakStr>& leaks);
        /**
         * @brief    获取渗漏表格
         * @return   QList<Acoustics::FITKSEAJunAreaLeakStr>
         * @author   BaGuijun (baguijun@163.com)
         * @date     2024-11-15
         */
        QList<Acoustics::FITKSEAJunAreaLeakStr> getLeaksTable();
    private:
        /**
         * @brief  ui对象
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-11-12
         */
        Ui::SEAAreaJunctionDialog* _ui = nullptr;
        /**
         * @brief  对称矩阵界面
         * @author BaGuijun (baguijun@163.com)
         * @date   2024-11-13
         */
        SEAJunctionUserDefWidget* _userDefWidget = nullptr;
    };
}
#endif
